package god;

import java.util.Scanner;

public class J17BasicClass {

	public static void main(String[] args) {
		
		// 동등성 : 객체의 값
		// 동질성 : 객체의 주소
		// 객체 비교 : equals()
		String userid = "godraines";
		String passwd = "1234";
		Scanner sc = new Scanner(System.in);

		// 객체 비교시 == 사용하면 객체의 동질성 (객체가 가르키는 대상) 을 비교함
		// 해당 객체의 주소값을 비교한다는 의미
		System.out.println(" 아이디를 입력하세요.");
		String youid = sc.next();
		
		if ( userid == youid ) 
			System.out.println( "아이디 일치" );
		else 
			System.out.println("아이디 불일치");
		System.out.println( System.identityHashCode(userid) );		// identityHashCode : 주소 값 받을 때 사용 16진수
		System.out.println( System.identityHashCode(youid) );
		
		// 따라서, 객체의 값 (동등성) 을 비교할때에는 Object 클래스에 정의된 equals()를 사용해야함
		if ( userid.equals( youid ) )
			System.out.println( "아이디 일치" );
		else 
			System.out.println("아이디 불일치");
		
		// 래퍼클래스, 박싱, 언박싱
		// 래퍼 클래스 : 기본 자료형을 참조 자료형으로 다룰 수 있도록 JDK5부터 지원하는 클래스
		// 박싱 : 기본 자료형을 참조 자료형으로 변환
		// 언박싱 : 참조 자료형을 기본 자료형으로 변환
		int a = 1; // 기본 자료형 int
		Integer b = new Integer(1);
		System.out.println(b.toHexString(20));
		Integer c = 123;	// 자동 박싱
		// Integer c = new Integer(123);
		int d = c; // 자동 언박싱
		// int d = c.intValue();
		
		// wrapper 클래스의 사용 예
		System.out.println("숫자를 하나 입력하세요.");
		// 스윙이나 그래픽 기반에서는 기본적으로 문자열로 받음
		// 문자 형태로 숫자를 입력 받을 경우
		//String mynum = sc.next();
		int mynum = Integer.parseInt( sc.next() );		// 문자를 숫자로 변형 시켜서 mynum에 넣음
		System.out.println(mynum + 10);
	}

}
